# MSDOS make file for 100-digit libraries:
#
#	qfloata.lib	Strictly-rounded version
#	qfloatb.lib	Non-Strictly-rounded Fairly-Fast version
#	qfloatf.lib	Non-Strictly-rounded Fastest version

CFLAGS		= -c -nologo $(SIG_BITS) $(MODEL) $(OPTIMIZ)
LIBROOT_A	= qfloata
LIBROOT_B	= qfloatb
LIBROOT_F	= qfloatf
MODEL		= -AS
NO_OPTIMIZ	= -Od
OPTIMIZ		= -Ox
SIG_BITS	= -DU336	# -DU144
UFLAGS		= -c -nologo $(SIG_BITS) $(MODEL) $(NO_OPTIMIZ)

.asm.obj:
	set path=c:\;c:\dos;d:\c700\bin;d:\masm61\bin
	ml /I. /Zm /c /Cx /Ta $<

.c.obj:
	cl $(CFLAGS) $<

# Objects Common to all libraries
#
OBJECTS_C = qlog.obj qlog10.obj qexp.obj qpow.obj qtanh.obj qfloor.obj qflti.obj\
	    mtherr.obj qconst.obj qrand.obj qremain.obj

#	Objects That Produce Strictly Rounded Version
#
OBJECTS_A = $(OBJECTS_C) qsqrta.obj qflta.obj

#	Objects That Produce Faster Non-Strictly Rounded Version
#
OBJECTS_B = $(OBJECTS_C) qsqrt.obj qfltb.obj

#	Objects That Produce Fastest Non-Strictly Rounded Version
#
OBJS_ASM  = subm.obj mulr.obj divn.obj
OBJ_SQRT  = qsqrt.obj
OBJECTS_F = $(OBJECTS_C) $(OBJS_ASM) $(OBJ_SQRT)

HEADERS   =  qhead.asm qhead.h mconf.h

# Medium-fast non-strictly rounded version, all C language
$(LIBROOT_B).lib: $(OBJECTS_B)
	-move $(LIBROOT_B).lib $(LIBROOT_B).old	> nul
	lib /nologo $(LIBROOT_B) $(OBJECTS_B:.obj=) ;

# Fastest version
$(LIBROOT_F).lib: $(OBJECTS_F)
	-move $(LIBROOT_F).lib $(LIBROOT_F).old	> nul
	lib /nologo $(LIBROOT_F) $(OBJECTS_F:.obj=) ;

# Strictly rounded version, all C language
$(LIBROOT_A).lib: $(OBJECTS_A)
	-move $(LIBROOT_A).lib $(LIBROOT_A).old	> nul
	lib /nologo $(LIBROOT_A) $(OBJECTS_A:.obj=) ;

all: $(LIBROOT_A).lib $(LIBROOT_B).lib $(LIBROOT_F).lib

protos:
	zgmake qflt qlog qexp qpow qtanh qfloor mtherr qflta qsqrta

xcg:
	cat $(OBJECTS_A:.obj=.c) > $(TMP)all.c
	xcg $(TMP)all.c | awk -f $(HOME)/extlist.awk | sed s/^........// |\
		sed "s/ [.[]..*]$$//" | cat -n > qfloat.xcg
	del $(TMP)all.c

#qcalc.obj: qcalc.c qhead.h qcalc.h
#	cl $(CFLAGS) qcalc.c
qexp.obj: qexp.c qhead.h
	cl $(UFLAGS) qexp.c
qfloor.obj: qfloor.c qhead.h mconf.h
qflta.obj:  qflta.c qhead.h
qfltb.obj:  qfltb.c qhead.h
qflti.obj:  mconf.h  qhead.h  qtens.h
qlog.obj: qlog.c qhead.h
	cl $(UFLAGS) qlog.c
qlog10.obj: qlog10.c qhead.h
qpow.obj: qpow.c qhead.h mconf.h
	cl $(UFLAGS) qpow.c
qrand.obj:	qhead.h
qremain.obj:	qhead.h mconf.h
qsqrta.obj: qsqrta.c qhead.h mconf.h
qsqrt.obj: qsqrt.c qhead.h
qtanh.obj: qtanh.c qhead.h

subm.obj: subm.asm qhead.asm
mulr.obj: mulr.asm qhead.asm
divn.obj: divn.asm qhead.asm

qconst.obj: qconst.c qhead.h
	cl $(CFLAGS) qconst.c

mtherr.obj: mtherr.c qhead.h mconf.h
	cl $(CFLAGS) mtherr.c

save:
	-pkzip -u b:qfloat *.c *.asm *.h *.txt *.doc qtstq.zip makefile

mklist:
	@echo -n $(OBJECTS_C:.obj=.c) $(OBJS_ASM:.obj=.asm) $(OBJ_SQRT:.obj=.c)
	@echo "" $(HEADERS)
